package com.example.lovewordsapplication.base;

import android.os.Bundle;

import com.example.lovewordsapplication.MyApplication;
import com.example.lovewordsapplication.utils.KeyboardUtil;
import com.example.lovewordsapplication.utils.ToastUtil;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;

import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;

import android.text.TextUtils;
import android.util.Log;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.widget.EditText;

import com.example.lovewordsapplication.R;

/**
 * @author Leung
 * @date 2020/4/7 23:37
 */
public abstract class BaseActivity extends AppCompatActivity {

    private MyApplication application;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(getLayoutResID());
        // 获取 MyApplication 的实例
        application = MyApplication.getInstance();
        // 初始化 Toolbar
        initToolbar();
        // 判断是否显示返回按钮
        if (isShowBack()) {
            initBack();
        }
    }

    @Override
    public void setContentView(int layoutResID) {
        super.setContentView(layoutResID);
        initView();
        initData();
    }

    /**
     * 获取子类的布局文件的资源id
     *
     * @return 布局文件的资源id
     */
    protected abstract int getLayoutResID();

    /**
     * 初始化视图
     */
    protected abstract void initView();

    /**
     * 初始化数据
     */
    protected void initData() {
    }

    /**
     * 初始化 Toolbar
     */
    private void initToolbar() {
        Toolbar toolbar = findViewById(R.id.toolbar);
        toolbar.setTitle(setTitle());
        setSupportActionBar(toolbar);
    }

    /**
     * 设置Toolbar的标题
     *
     * @return 标题
     */
    protected abstract String setTitle();

    /**
     * 是否显示返回按钮
     *
     * @return 是或否
     */
    protected abstract boolean isShowBack();

    /**
     * 初始化返回按钮
     */
    private void initBack() {
        // 显示返回按钮
        ActionBar actionBar = getSupportActionBar();
        if (actionBar != null) {
            actionBar.setDisplayHomeAsUpEnabled(true);
        }
    }

    /**
     * 弹出土司
     *
     * @param content 内容
     */
    public void toast(String content) {
        ToastUtil.showToast(application.getContext(), content, 0);
    }

    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                finish();
                break;
            default:
        }
        return true;
    }

    @Override
    protected void onDestroy() {
        ToastUtil.cancelToast();
        super.onDestroy();
    }

    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        if (ev.getAction() == MotionEvent.ACTION_DOWN) {
            // 获取当前拥有焦点的 View
            View view = getCurrentFocus();
            // 判断当前的 View 是否是 EditText
            if (view instanceof EditText) {
                KeyboardUtil.hideKeyboard(view);
            }
        }
        return super.dispatchTouchEvent(ev);
    }
}
